Data Encoding হল একটি প্রক্রিয়া যার মাধ্যমে ক্যাটেগোরিক্যাল (categorical) ডেটাকে মেশিন লার্নিং মডেল দ্বারা বোধগম্য করার জন্য সংখ্যায় রূপান্তর করা হয়। ক্যাটেগোরিক্যাল ডেটা সাধারণত টেক্সট বা শ্রেণীর মতো হয়, কিন্তু মেশিন লার্নিং অ্যালগরিদমগুলি সাধারণত সংখ্যাসূচক ডেটার সাথে কাজ করতে সক্ষম। তাই, ক্যাটেগোরিক্যাল ডেটার জন্য Label Encoding এবং One-Hot Encoding অন্যতম জনপ্রিয় পদ্ধতি।
১. Label Encoding
Label Encoding হল একটি পদ্ধতি যেখানে ক্যাটেগোরিক্যাল ফিচারগুলির প্রতিটি শ্রেণীকে একটি ইউনিক নম্বরে রূপান্তর করা হয়। উদাহরণস্বরূপ, যদি একটি ক্যাটেগোরিক্যাল ফিচার যেমন "Color" এর মধ্যে "Red", "Green", এবং "Blue" থাকলে, এই ফিচারের প্রতিটি ক্যাটেগোরিক্যাল ভ্যালুকে ০, ১, ২ (অথবা কোন সংখ্যাত্মক মান) দিয়ে রিপ্লেস করা হবে।
উদাহরণ:
ধরা যাক, একটি "Color" কলামে নিম্নলিখিত মানগুলি রয়েছে:
- Red
- Green
- Blue
এখন, Label Encoding প্রক্রিয়া ব্যবহার করলে:
- Red → 0
- Green → 1
- Blue → 2
এটি Ordinal Data (অর্থাৎ, যেখানে শ্রেণীভেদ একটি নির্দিষ্ট ক্রম অনুসরণ করে) এর জন্য কার্যকরী। তবে, যদি শ্রেণীগুলির মধ্যে কোন নির্দিষ্ট ক্রম না থাকে (যেমন, "Red", "Green", "Blue"), তবে Label Encoding যথাযথ হবে না, কারণ এটি মডেলকে এমন ভাবতে বাধ্য করবে যে, এই শ্রেণীগুলির মধ্যে কোনো নির্দিষ্ট ক্রম আছে, যা বাস্তবতার সাথে সঙ্গতিপূর্ণ নয়।
স্কিকিট-লার্নের মাধ্যমে Label Encoding:
from sklearn.preprocessing import LabelEncoder
# ডেটা
colors = ['Red', 'Green', 'Blue', 'Green', 'Red']
# LabelEncoder অবজেক্ট তৈরি
le = LabelEncoder()
# ফিচার এনকোড করা
encoded_colors = le.fit_transform(colors)
print(encoded_colors) # আউটপুট: [2 1 0 1 2]
২. One-Hot Encoding
One-Hot Encoding হল একটি পদ্ধতি যেখানে ক্যাটেগোরিক্যাল ফিচারগুলির প্রতিটি শ্রেণীকে একটি আলাদা বাইনারি ভেক্টর (0 বা 1) হিসাবে রূপান্তর করা হয়। এখানে, প্রতিটি শ্রেণীর জন্য একটি নতুন কলাম তৈরি হয় এবং সেই কলামে সেই শ্রেণীটির উপস্থিতি বা অনুপস্থিতি ১ বা ০ দ্বারা চিহ্নিত হয়।
উদাহরণ:
ধরা যাক, একটি "Color" কলামে নিম্নলিখিত মানগুলি রয়েছে:
- Red
- Green
- Blue
এখন, One-Hot Encoding ব্যবহার করলে:
| Color | Red | Green | Blue |
|---|---|---|---|
| Red | 1 | 0 | 0 |
| Green | 0 | 1 | 0 |
| Blue | 0 | 0 | 1 |
| Green | 0 | 1 | 0 |
| Red | 1 | 0 | 0 |
এখানে, প্রতি শ্রেণীর জন্য একটি নতুন বাইনারি কলাম তৈরি হয়েছে, যেখানে ১ বা ০ দিয়ে প্রতিটি শ্রেণীর উপস্থিতি নির্ধারণ করা হয়েছে।
Pandas DataFrame-এর মাধ্যমে One-Hot Encoding:
import pandas as pd
# ডেটা
data = {'Color': ['Red', 'Green', 'Blue', 'Green', 'Red']}
# DataFrame তৈরি
df = pd.DataFrame(data)
# One-Hot Encoding করা
df_encoded = pd.get_dummies(df, columns=['Color'])
print(df_encoded)
আউটপুট:
Color_Blue Color_Green Color_Red
0 0 0 1
1 0 1 0
2 1 0 0
3 0 1 0
4 0 0 1
Label Encoding vs One-Hot Encoding
| বৈশিষ্ট্য | Label Encoding | One-Hot Encoding |
|---|---|---|
| প্রক্রিয়া | ক্যাটেগোরিক্যাল ভ্যালুগুলিকে একটি সংখ্যা দিয়ে এনকোড করা হয় | প্রতিটি ক্যাটেগোরিক্যাল ভ্যালুর জন্য একটি বাইনারি কলাম তৈরি করা হয় |
| প্রয়োগ | যখন ক্যাটেগোরিক্যাল ডেটা ইন্টারঅর্ডিনাল (Order) হয় | যখন ক্যাটেগোরিক্যাল ডেটা নন-অর্ডিনাল (No Order) হয় |
| ফিচার সংখ্যা | ফিচারের সংখ্যা সংখ্যা সমান হয় | প্রতিটি ক্যাটেগোরিক্যাল ভ্যালুর জন্য নতুন কলাম তৈরি হয় |
| মেমরি ব্যবহার | কম মেমরি ব্যবহার | বেশি মেমরি ব্যবহার, কারণ অনেক কলাম তৈরি হয় |
| মডেল প্রভাব | মডেল শ্রেণীসমূহের মধ্যে ক্রম ধারা বুঝে কাজ করতে পারে | মডেল কোনো ক্রমের ধারণা ছাড়াই শ্রেণীসমূহকে আলাদা ভাবে ব্যবহার করে |
সারাংশ
- Label Encoding ক্যাটেগোরিক্যাল ডেটার শ্রেণীসমূহকে সংখ্যায় রূপান্তর করে এবং এটি সাধারণত Ordinal ডেটার জন্য উপযুক্ত।
- One-Hot Encoding ক্যাটেগোরিক্যাল ডেটাকে বাইনারি কলামে রূপান্তর করে, এটি Nominal ডেটার জন্য ব্যবহার করা উচিত যেখানে শ্রেণীগুলির মধ্যে কোন নির্দিষ্ট ক্রম নেই।
এই দুটি পদ্ধতি ডেটা প্রিপ্রসেসিংয়ের গুরুত্বপূর্ণ অংশ, এবং এগুলির সঠিক ব্যবহার মডেলের দক্ষতা এবং পারফরম্যান্স উন্নত করতে সহায়ক।
Read more